package com.xwx.common.interceptor;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.core.JFinal;
import com.jfinal.render.JsonRender;
import com.xwx.common.model.ErrorLogModel;

/**
* @Description:统一异常处理
* @author:Dream QQ:68697015
* @time:2015年8月17日 下午4:54:33
 */
public class ErrorLogInterceptor implements Interceptor{
	protected Logger logger=Logger.getLogger(getClass());
	@Override
	public void intercept(Invocation inv) {
		try {
			inv.invoke();
		} catch (Exception e) {
			//记录日志
			ErrorLogModel log = new ErrorLogModel();
			log.set("module", inv.getControllerKey());
			log.set("method",inv.getMethodName());
			log.set("message", e.getMessage());
			log.save();
			logger.info("save errorLog success");
			//是否开发模式
			doLog(inv,e);
			Map<String,Object>json=new HashMap<String,Object>();
			json.put("flag", "1");
			json.put("msg", "非常抱歉，系统产生一个错误\n："+e.getMessage());			
			inv.getController().render(new JsonRender(json).forIE());
		}
	}
	/**
	  * @methodName: doLog
	  * @param ai 
	  * @param e 
	  */
	 private void doLog(Invocation ai,Exception e) {
	  //开发模式
	  if(JFinal.me().getConstants().getDevMode()){
	   e.printStackTrace();
	  }else{
		  logger.info("又出问题啦:"+e.getMessage());
	  }
	 }	
}
